package com.ittao.taoaicodemother.manage.storage.entity;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.concurrent.ScheduledFuture;

/**
 * 会话信息实体
 * 用于存储会话相关的信息和状态
 */
@Data
public class SessionInfo {
    
    /**
     * 会话ID
     */
    private final String sessionId;
    
    /**
     * 用户ID
     */
    private final String userId;
    
    /**
     * 应用ID
     */
    private final String appId;
    
    /**
     * 临时文件路径
     */
    private final String tempFilePath;
    
    /**
     * 最后活动时间
     */
    private volatile LocalDateTime lastActivityTime;
    
    /**
     * 清理任务
     */
    private volatile ScheduledFuture<?> cleanupTask;

    /**
     * 构造函数
     * @param sessionId 会话ID
     * @param userId 用户ID
     * @param appId 应用ID
     * @param tempFilePath 临时文件路径
     * @param now 当前时间
     */
    public SessionInfo(String sessionId, String userId, String appId, String tempFilePath, LocalDateTime now) {
        this.sessionId = sessionId;
        this.userId = userId;
        this.appId = appId;
        this.tempFilePath = tempFilePath;
        this.lastActivityTime = now;
    }

    /**
     * 更新最后活动时间
     */
    public void updateLastActivityTime() {
        this.lastActivityTime = LocalDateTime.now();
    }

    /**
     * 设置清理任务
     * @param cleanupTask 清理任务
     */
    public void setCleanupTask(ScheduledFuture<?> cleanupTask) {
        // 取消之前的任务
        cancelCleanupTask();
        this.cleanupTask = cleanupTask;
    }

    /**
     * 取消清理任务
     */
    public void cancelCleanupTask() {
        if (cleanupTask != null && !cleanupTask.isDone()) {
            cleanupTask.cancel(false);
        }
    }
}